package com.itheima.zuoye.zuoye1;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.HashMap;
import java.util.Map;

public class Test {
    public static void main(String[] args) throws FileNotFoundException {
        //用Map集合的方法统计每个key出现的次数，
        Map<String, Integer> map = new HashMap<>();
        //创建一个IO流读取work文件中所有的字符集，
        try (FileReader fr = new FileReader("day17_threadnet\\src\\com\\" +
                "itheima\\zuoye\\zuoye1\\work.txt");
             BufferedReader br = new BufferedReader(fr);
        ) {
        // 采用一行一行读取，然后拆分存入集合中，
            //用逗号分隔
            //定义一个常量
            String line;
            while ((line = br.readLine()) != null) {
                //将每一行数据按照指定的格式拆分，并存入split数组中
                String[] split = line.split(",");
                //遍历整个数组
                for (String k : split) {
                    //判断集合中是否包含该数据
                    if (map.containsKey(k)) {
                        //如果包含就将次数value加1
                        map.put(k, map.get(k) + 1);
                    } else {
                        map.put(k, 1);
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("文件读取完毕");
        System.out.println("所有数据出现的次数");
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }
        System.out.println("=========");
        //求出次数最多的六个数据
        //运用stream流的排序方法和limit取前6名
        System.out.println("出现次数最多的6个数据");
        map.entrySet().stream()
                .sorted((e1,e2)-> e2.getValue().compareTo(e1.getValue()))
                .limit(6)
                .forEach(entry -> System.out.println(entry.getKey() + ":" + entry.getValue()));


    }
}
